160 CLS:SCREEN 2:KEY OFF:FOR I=1 TO 10:KEY I,"":NEXT
170 REM VARIABLES
180 DIM A%(144),B%(144),D%(144),E%(144),F%(144),C%(144),G%(144),H%(144),I%(144),J%(144),K%(144),L%(144),M%(144),N%(144),O%(144),P%(144),Q%(144),R%(144),S%(144),T%(144),U%(144),A(20,54):NUM=1:STA=1:EN=20:SP=0:PL=1:GET(1,10)-(54,30),U%
290 A$=INKEY$:IF A$="" THEN 290 ELSE IF LEN(A$)=2 THEN 830 ELSE IF VAL(A$)>0 AND VAL(A$)<10 THEN 430
300 IF A$="P" THEN 3080
310 IF A$<>"Q" THEN 350
320 LOCATE 18,1:PRINT "ARE YOU SURE YOU WANT TO QUIT? (Y/N)"
330 A$=INKEY$:IF A$="" THEN 330 ELSE IF A$="Y" THEN SCREEN 0,0,0:CLS:END ELSE LOCATE 18,1:PRINT STRING$(50,32):GOTO 290
340 REM CLEAR SCREEN
350 IF A$<>"C" THEN 380
360 LOCATE 17,1:PRINT"ARE YOU SURE (Y,N)":DEF SEG:POKE 106,0
370 A$=INKEY$:IF A$="" THEN 370 ELSE IF A$="Y" THEN CLS:GOTO 190:ELSE LOCATE 17,1:PRINT STRING$(66,32):GOTO 290
380 IF A$="S" THEN 870 ELSE IF A$="L" THEN 990
390 IF A$="D" THEN 2800 ELSE IF A$="I" THEN 2360
400 GOTO 290
410 IF FAST=0 THEN BEEP:GOTO 290 ELSE FAST=FAST-1:LOCATE 1,68:PRINT FAST;:GOTO 290
420 IF FAST=150 THEN BEEP:GOTO 290 ELSE FAST=FAST+1:LOCATE 1,68:PRINT FAST;:GOTO 290
430 ON VAL(A$) GOTO 520,1080,470,500,480,450,410,420,3040
440 REM SET SPEED
450 IF SP=15 THEN BEEP ELSE SP=SP+1:LOCATE 1,46:PRINT SP
460 GOTO 290
470 STA=NUM:LOCATE 1,20:PRINT STA:GOTO 290
480 IF SP=-15 THEN BEEP ELSE SP=SP-1:LOCATE 1,46:PRINT SP
490 GOTO 290
500 EN=NUM:LOCATE 1,31:PRINT EN:GOTO 290
510 REM ANIMATE PICTURES
520 LOCATE 17,1:PRINT"PRESS THE SPACE BAR TO HALT PICTURE":LOCATE 18,1:PRINT "USE ARROW KEYS FOR SPEED":IF STA>EN THEN QQ=-1 ELSE QQ=1
530 FOR I=STA TO EN STEP QQ
540 PL1=PL:IF PL+SP<1 THEN PL=570 ELSE IF PL+SP>580 THEN PL=1
550 PL=PL+SP
560 LOCATE 1,8:PRINT I:ON I GOTO 630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820
570 FOR N=0 TO FAST*4:NEXT:A$=INKEY$:IF A$=" " THEN 2340 ELSE IF A$<>""AND LEN (A$)<>2 THEN LOCATE 1,8:PRINT NUM:LOCATE 17,1:PRINT STRING$(150,32):GOTO 290
580 IF LEN(A$)<>2 THEN 620
590 C=ASC(RIGHT$(A$,1)):IF C=77 THEN SP=SP+1 ELSE IF C=75 THEN SP=SP-1
600 IF SP=-16 THEN SP=-15 ELSE IF SP=16 THEN SP=15
610 LOCATE 1,46:PRINT SP
620 NEXT :GOTO 530
630 PUT(PL1,52),U%,PSET:PUT(PL,52),A%:GOTO 570
640 PUT(PL1,52),U%,PSET:PUT(PL,52),B%:GOTO 570
650 PUT(PL1,52),U%,PSET:PUT(PL,52),C%:GOTO 570
660 PUT(PL1,52),U%,PSET:PUT(PL,52),D%:GOTO 570
670 PUT(PL1,52),U%,PSET:PUT(PL,52),E%:GOTO 570
680 PUT(PL1,52),U%,PSET:PUT(PL,52),F%:GOTO 570
690 PUT(PL1,52),U%,PSET:PUT(PL,52),G%:GOTO 570
700 PUT(PL1,52),U%,PSET:PUT(PL,52),H%:GOTO 570
710 PUT(PL1,52),U%,PSET:PUT(PL,52),I%:GOTO 570
720 PUT(PL1,52),U%,PSET:PUT(PL,52),J%:GOTO 570
730 PUT(PL1,52),U%,PSET:PUT(PL,52),K%:GOTO 570
740 PUT(PL1,52),U%,PSET:PUT(PL,52),L%:GOTO 570
750 PUT(PL1,52),U%,PSET:PUT(PL,52),M%:GOTO 570
760 PUT(PL1,52),U%,PSET:PUT(PL,52),N%:GOTO 570
770 PUT(PL1,52),U%,PSET:PUT(PL,52),O%:GOTO 570
780 PUT(PL1,52),U%,PSET:PUT(PL,52),P%:GOTO 570
790 PUT(PL1,52),U%,PSET:PUT(PL,52),Q%:GOTO 570
800 PUT(PL1,52),U%,PSET:PUT(PL,52),R%:GOTO 570
810 PUT(PL1,52),U%,PSET:PUT(PL,52),S%:GOTO 570
820 PUT(PL1,52),U%,PSET:PUT(PL,52),T%:GOTO 570
830 C=ASC(RIGHT$(A$,1)):IF C=77 THEN NUM=NUM+1 ELSE IF C=75 THEN NUM=NUM-1
840 IF NUM=0 THEN NUM=20 ELSE IF NUM=21 THEN NUM=1
850 LOCATE 1,8:PRINT NUM :GOTO 290
860 REM SAVE PICTURE
870 CLS:ON ERROR GOTO 25010
880 LOCATE 10,10:PRINT"F-FILES A-ABORT SAVE ANY OTHER KEY TO CONTINUE
890 A$=INKEY$:IF A$="" THEN 890 ELSE IF A$="F" THEN FILES"*.ANI" ELSE IF A$="A" THEN GOSUB 2310:GOTO 190
900 PRINT:PRINT :PRINT :INPUT"NAME OF FILE TO BE SAVED";A$:IF A$="" THEN GOSUB 2310:GOTO 190
910 IF INSTR(A$,".")<>0 THEN CLS:LOCATE 9,10:PRINT "NO EXTENTION PLEASE.":GOTO 880
920 IF LEN(A$)>8 THEN CLS:LOCATE 9,10:PRINT "LESS THAN 8 CHARICTERS PLEASE..":GOTO 880
930 IF VAL(RIGHT$(A$,1))>0 OR RIGHT$(A$,1)="0" THEN CLS:LOCATE 9,10:PRINT "THE FIRST CHARICTER CANT BE A NUMBER."GOTO 880
940 GOSUB 2310
950 A$=A$+".ANI"
960 DEF SEG=&HB800:BSAVE A$,0,&H4000:PRINT "IT HAS BEEN SAVED. PRESS ANY KEY TO CONTINUE":PRINT :PRINT :PRINT
970 A$=INKEY$:IF A$="" THEN 970 ELSE CLS:GOSUB 2310 :GOTO 190
980 REM LOAD PICTURE
990 CLS:ON ERROR GOTO 25000
1000 LOCATE 10,10:PRINT "F-FILES A-ABORT LOAD ANY OTHER KEY TO CONTINUE"
1010 A$=INKEY$:IF A$="" THEN 1010 ELSE IF A$="F" THEN FILES"*.ANI" ELSE IF A$="A" THEN GOSUB 2310:GOTO 190
1020 PRINT :PRINT :PRINT :INPUT "NAME OF FILE TO BE LOADED";A$:IF A$="" THEN GOSUB 2310 :GOTO 190
1040 IF LEN(A$)>8 THEN CLS:LOCATE 9,10:PRINT "NO MORE THAN 8 CHARACTERS PLEASE":GOTO 1000
1050 IF VAL(RIGHT$(A$,1))>0 OR RIGHT$(A$,1)="0" THEN CLS :LOCATE 9,10:PRINT "THE FIRST CHARACTER CAN'T BE A NUMBER..":GOTO 1000
1080 LOCATE 16,1:PRINT"TYPE IN 21 TO ABORT":PRINT"NUMBER SET AT THE TOP OF THE SCREEN IS PIC TO READ FROM RETURN FOR SAME":LOCATE 18,1:INPUT"EDIT PICTURE NUMBER";B: IF B<0 OR B>21 THEN BEEP:GOTO 1080
1090 IF B=21 THEN CLS :GOSUB 2310 :GOTO 190
1100 IF B=0 THEN B=NUM
1110 REM PUT PICTURE TO EDIT ON SCREEN
1120 CLS:LOCATE 1,24:PRINT"WAIT..":ON NUM GOTO 1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1240,1250,1260,1270,1280,1290,1300,1310,1320
1130 PUT(1,50),A%:GOTO 1340
1140 PUT(1,50),B%:GOTO 1340
1150 PUT(1,50),C%:GOTO 1340
1160 PUT(1,50),D%:GOTO 1340
1170 PUT(1,50),E%:GOTO 1340
1180 PUT(1,50),F%:GOTO 1340
1190 PUT(1,50),G%:GOTO 1340
1200 PUT(1,50),H%:GOTO 1340
1210 PUT(1,50),I%:GOTO 1340
1220 PUT(1,50),J%:GOTO 1340
1230 PUT(1,50),K%:GOTO 1340
1240 PUT(1,50),L%:GOTO 1340
1250 PUT(1,50),M%:GOTO 1340
1260 PUT(1,50),N%:GOTO 1340
1270 PUT(1,50),O%:GOTO 1340
1280 PUT(1,50),P%:GOTO 1340
1290 PUT(1,50),Q%:GOTO 1340
1300 PUT(1,50),R%:GOTO 1340
1310 PUT(1,50),S%:GOTO 1340
1320 PUT(1,50),T%:GOTO 1340
1330 REM GET ON-OFF POINTS
1340 FOR I=1 TO 20 :FOR X=1 TO 54:A(I,X)=POINT(X,I+49)
1350 NEXT :NEXT
1360 REM DRAW EDITING SCREEN
1370 FOR I=1 TO 20:LOCATE 3+I,14:PRINT"......................................................";:FOR J=1 TO 54:IF A(I,J)=1 THEN LOCATE 3+I,13+J:PRINT"#"
3390 CLS:ON P GOTO 3400,3410,3420,3430,3440,3450,3460,3470,3480,3490,3500,3510,3520,3530,3540,3550,3560,3570,3580,3590
3400 PUT(1,50),A%:GOTO 3600
3410 PUT(1,50),B%:GOTO 3600
3420 PUT(1,50),C%:GOTO 3600
3430 PUT(1,50),D%:GOTO 3600
3440 PUT(1,50),E%:GOTO 3600
3450 PUT(1,50),F%:GOTO 3600
3460 PUT(1,50),G%:GOTO 3600
3470 PUT(1,50),H%:GOTO 3600
3480 PUT(1,50),I%:GOTO 3600
3490 PUT(1,50),J%:GOTO 3600
3500 PUT(1,50),K%:GOTO 3600
3510 PUT(1,50),L%:GOTO 3600
3520 PUT(1,50),M%:GOTO 3600
3530 PUT(1,50),N%:GOTO 3600
3540 PUT(1,50),O%:GOTO 3600
3550 PUT(1,50),P%:GOTO 3600
3560 PUT(1,50),Q%:GOTO 3600
3570 PUT(1,50),R%:GOTO 3600
3580 PUT(1,50),S%:GOTO 3600
3590 PUT(1,50),T%:GOTO 3600
3600 FOR X=1 TO 54:G=G+10:A$=STR$(G):FOR A$=RIGHT$(A$,LEN(A$)-1):FOR I=1 TO 20 :IF POINT(X,I+49)=1 THEN A$=A$+":PSET(":B$=STR$(X):A$=A$+RIGHT$(B$,LEN(B$)-1):A$=A$+",":B$=STR$(I+49):A$=A$+RIGHT+(B$,LEN(B$)-):A$=A$+")"
3610 NEXT:IF LEN(A$)>6 THEN B$=LEFT$(A$,LEN(A$)-LEN(B$))-1):A$=B$+" "+A$:PRINT #1,A$ ELSE G=G-10
3620 NEXT
3630 G=G+10:A$=STR$(G):A$=RIGHT$(A$,LEN(A$)-1):ON P GOTO 3640,3650,3660,3670,3680,3690,3700,3710,3720,3730,3740,3750,3760,3770,3780,3790,3800,3810,3820,3830
3640 A$=A$+" GET(1,50)-(54,70),A%":GOTO 3840
3650 A$=A$+" GET(1,50)-(54,70),B%":GOTO 3840
3660 A$=A$+" GET(1,50)-(54,70),C%":GOTO 3840
3670 A$=A$+" GET(1,50)-(54,70),D%":GOTO 3840
3680 A$=A$+" GET(1,50)-(54,70),E%":GOTO 3840
3690 A$=A$+" GET(1,50)-(54,70),F%":GOTO 3840
3700 A$=A$+" GET(1,50)-(54,70),G%":GOTO 3840
3710 A$=A$+" GET(1,50)-(54,70),H%":GOTO 3840
3720 A$=A$+" GET(1,50)-(54,70),I%":GOTO 3840
3730 A$=A$+" GET(1,50)-(54,70),J%":GOTO 3840
3740 A$=A$+" GET(1,50)-(54,70),K%":GOTO 3840
3750 A$=A$+" GET(1,50)-(54,70),L%":GOTO 3840
3760 A$=A$+" GET(1,50)-(54,70),M%":GOTO 3840
3770 A$=A$+" GET(1,50)-(54,70),N%":GOTO 3840
3780 A$=A$+" GET(1,50)-(54,70),O%":GOTO 3840
3790 A$=A$+" GET(1,50)-(54,70),P%":GOTO 3840
3800 A$=A$+" GET(1,50)-(54,70),Q%":GOTO 3840
3810 A$=A$+" GET(1,50)-(54,70),R%":GOTO 3840
3820 A$=A$+" GET(1,50)-(54,70),S%":GOTO 3840
3830 A$=A$+" GET(1,50)-(54,70),T%":GOTO 3840
3840 A$=A$+":CLS":PRINT #1,A$:NEXT
3850 IF STA=EN THEN STN=1:EA=1:GOTO 3880
3860 IF STA>EN THEN STA=STA-EN:EA=1 ELSE EA=EN-STA:STN=1
3869 IF STA>EN THEN STA=STA-EN:EA=1 ELSE EA=EN-STA:STN=1
3870 IF EA+QQ=0 THEN EA=EA-QQ
3880 G=G+10:R=G:A$=RIGHT$(STR$(G),LEN(STR$(G))-1)+" FOR I="+RIGHT$(STR$(STN),LEN(STR$(STN))-1)+" TO"+STR$(EA+QQ)+" STEP"+STR$(QQ):PRINT #1,A$:G=G+10
3890 A$=RIGHT$(STR$(G),LEN(STR$(G))-1)+" FOR P=1 TO":A$=A$+STR$(INT(FAST*4.2))+":NEXT:PL1=PL:IF PL+SP<1 THEN PL=570 ELSE IF PL+SP>580 THEN PL=1"
3920 A$=REGHT$(STR$(G),LEN(STR$(G))-1+" ON I GOTO":X=G+10:A$=A$+STR$(X):FOR I=STA TO EN+(QQ*-1) STEP QQ:X=X+10:A$=A$+","+RIGHT$(STR$(X),LEN(STR$(X))-1):NEXT :PRINT #1,A$
3930 IF STA>EN THEN Q=STA:W=EN ELSE IF EN>STA THEN Q=IN:W=STA
3940 FOR P=W TO Q
3950 G=G+10:A$=REGHT$(STR$(G),LEN(STR$(G))-1):ON P GOTO 3960,3970,3980,3990,4000,4010,4020,4030,4040,4050,4060,4070,4080,4090,4100,4110,4120,4130,4140,4150